<?php

namespace app\controller;

use app\BaseController;
use think\db\Where;
use think\facade\Db;

class UserBak extends BaseController
{
    public function index()
    {
        return '用户';
        // 返回实际路径
        //   return $this->app->getBasePath();
        // 返回当前方法
        // return $this->request->action();
    }
    public function login()
    {
        return '登录成功！';
    }

    public function getUserInfo()
    {
       //链接user表
         $user = Db::table('user')->select();
//         查询id为1的数据(但是只查询一条数据)
        $user = Db::table('user')->where('id',1)->find();
        $user=Db::table('user')->where('age',3)->find();
//      查找为空时返回的是null
//        $user = Db::table('user')->where('id',12)->find();
//        查找为空时返回的是空数组
//        $user = Db::table('user')->where('id',12)->findOrEmpty();
//        查找为空时返回的是异常
//        $user = Db::table('user')->where('id',12)->findOrFail();

//        查看sql语言
//        return  Db::getLastSql();
//        返回的是数组格式化好的类容
//        $user = Db::table('user')->select()->toArray();
//        halt($user);
//        查询多列数据
        $user=Db::table('user')->where('age',3)->select();
//         输出数据
        return json($user);
    }

//    设置数据库表前缀


    public function getDemoName(): \think\response\Json
    {
        $user = Db::name('user')->where('id',1)->value('name');

        $user=Db::name('user')->where('age',3)->column('name,age','id');
//批量处理数据
//        Db::name('user')->chunk(2,function($user){
//            foreach ($user as $user){
//                dump($user);
//            }
//            echo 1;
//        });
//游标查询
//        $users=Db::name('user')->cursor();
//        foreach ($users as $user){
//            dump($user);
//    }


//        return  Db::getLastSql();
        return  json($user);
    }

    public function addUser()
    {
//        正常单条新增
//        $data= [
//            "name"=>'黄狗蛋',
//            "age"=>4,
//            "gender"=>'男',
//            'details'=>'狗蛋没有蛋',
//        ];
//
//        return Db::name('user')->insert($data);


//        关闭严格模式的新增,多出的字段会报错，少了字段不会报错
//        $data=[
//            'name'=>'梅西',
//            'age'=>2.5,
//            'gender'=>'男',
//            'hhh'=>'还没有关闭严格检测呢',
//        ];
//
//        return Db::name('user')->strict(false)->insert($data);     insertGetId->是新增后会返回id的意思


//        替换
                $data= [
                    "id"=>5,
            "name"=>'梅西',
            "age"=>4,
            "gender"=>'男',
            'details'=>'一只布偶猫',
        ];

                return Db::name('user')->replace()->insert($data);
    }


    public function addUserAll()
    {
        $datas=[
            [
                "name"=>'七宝',
                "age"=>3,
                "gender"=>'女',
                'details'=>'一只三花猫',
            ],
            [
                "name"=>'十一',
                "age"=>2,
                "gender"=>'女',
                'details'=>'一只狸花猫',
            ]
        ];

        return Db::name('user')->insertAll($datas);
    }


    public function delUserFn()
    {
//        极简删除
//     return   Db::name('user')->delete(6);

//        正常删除
//        return Db::name('user')->where('id',7)->delete();

//        批量删除
//      return  Db::name('user')->delete([12,13,14]);

//        批量删除
        return Db::name('user')->where(['id'=>[12,13,14]])->delete();
    }

//    更新数据库
    public function updetaFn()
    {
//        有id的修改
        $data = [
            'name'=>'陈进宝999',
            'age'=>2,
        ];
//        return Db::name('user')->update($data);

//        没有id的修改
//        $data = [
//            'name'=>'杨进宝',
//            'age'=>2,
//            'details'=>'小进宝'
//        ];
//
//        return Db::name('user')->where('id',2)->update($data);

//        多数据修改
//        $data = [
//            [
//                'id'=>2,
//                'name'=>'杨进宝',
//                'age'=>2,
//                'gender'=>'女',
//                'details'=>'小进宝1'
//            ],
//            [
//                'id'=>1,
//                'name'=>'陈发财',
//                'age'=>3,
//                'gender'=>'女',
//                'details'=>'小发财1'
//            ]
//        ];
//        foreach ($data as $item) {
//            // 构建更新条件
//            $condition = ['id' => $item['id']];
//            // 构建更新的数据
//            $updateData = [
//                'name'  => $item['name'],
//                'age'   => $item['age'],
//                'gender'=> $item['gender'],
//                'details'=> $item['details']
//            ];
//            // 执行更新操作
//            Db::name('user')->where($condition)->update($updateData);
//        }

//        修改中执行sql命令
//        return Db::name("user")->exp("details", "UPPER(details)")->update($data);

//        自增和自减inc/dec
//        return Db::name('user')->inc('age',100)->update($data);
//        return Db::name('user')->dec('age',101)->update($data);

//        raw方法
        return Db::name('user')->where('id',2)->update(
            [
                'details'=>Db::raw('UPPER(details)'),
                'age'=>Db::raw('age + 2'),
            ]
        );

//        save方法有id就是修改没有就是新增
        return Db::name("user")->save($data);
}


    public function dbWhereFindFn()
    {
//        where("字段名","查询表达式","查询条件");
//        $user = Db::name('user')->where('id','>',4)->select();

//        whereIn
//        $user = Db::name('user')->whereIn('id',[1,2,3,4])->select();

//        whereNotIn
//        $user = Db::name('user')->whereNotIn('id',[1,2,3,4])->select();

//        模糊查询
//        $user = Db::name('user')->whereLike('name','陈%')->select();
//        null

//        原生查询
//        $user = Db::query('select * from tp_user');
//
//        $user = Db::execute('update tp_user set details="快快快来救我！" where id=5');
//        $user = Db::query("SELECT COUNT(*) FROM tp_user")[0]['COUNT(*)'];
// 使用Db类直接查询user表的数据条数
        $user = Db::name("user")->count('details');

// 返回JSON格式的数据
//        return json($user);

        dump($user);
}

public  function  link()
{
    $user =Db::name('user')->where('age','>',3)->where('gender' , '男')->select();

//    return  Db::getLastSql();

//    索引数组方法二维数组
    $user=Db::name('user')->where([
        ['age','>',"3"],
        ['gender','=','男']
    ])->select();

//    一维关联条件是全等于
    $user =Db::name('user')->where(
        [
            'age'=>4,
            'gender'=>'男'
        ]
    )->select();

//    俩种模式相结合
    $user =Db::name('user')->where(
        [
            ['age','>',"3"],
            'gender'=>'男'
        ]
    )->select();

    $map[]=['age','>',"3"];
    $map[]=['gender','=','女'];
    $user =Db::name('user')->where($map)->select();
   return json($user);
}


    public function adv()
    {
        $user =Db::name('user')->where('name|details','like','%陈%')
            ->where('id&create_time','>',0)->select();

        $map=[
          []
        ];

        $user=Db::name('user')->where([
            ['gender','=','女'],
            ['name','like','%陈%'],
        ])
            ->where([
                ['age','exp',Db::raw('>=2 AND id <=10')],
            ])
            ->whereOr([
            ['details','like','%陈%'],
        ])->select();

//        return  Db::getLastSql();
        return json($user);
    }
}
